//
//  NSArray+JKExtension.h
//  Category
//
//  Created by jamalping on 16/4/6.
//  Copyright © 2016年 jamalping. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSArray (JKExtension)

/**
 *  使用NSComparator进行排序
 *  使用NSDescriptor进行排序
 *  使用selector进行排序
 */

/**
 *  @brief  排序
 *
 *  @return 升序排列的数组
 */
- (NSArray *)sort;

/**
 *  @brief  根据数组中对象的某个属性进行排序
 *
 *  @param key    对象的属性的名称
 *  @param ascend 0:降序/1:升序
 *
 *  @return 排好序的数组
 */
- (NSArray *)sortObjectWithKey:(NSString *)key ascend:(BOOL)ascend;

/**
 *  @brief  将数字号码格式化并在每个元素之间插入一个字符串
 *
 *  @param format     格式化方式
 *  @param joinString 插入的字符串
 *
 *  @return 拼接的字符串
 */
- (NSString *)getNumberStringByFormat:(NSString*)format
                       joinedByString:(NSString *)joinString;


/**
 *  数组元素回调
 *
 *  @param block 回调方法
 */
- (void)each:(void (^)(id))block;


/**
 *  根据要求匹配数组元素
 *
 *  @param block 具体的要求
 *
 *  @return 匹配后的新数组
 */
- (NSArray *)filter:(BOOL (^)(id))block;

/**
 *  对数组元素作某种转换
 *
 *  @param block 具体的转换规则
 *
 *  @return 转换后后的新数组
 */
- (NSArray *)map:(id (^)(id))block;

/**
 *  累计
 *
 *  @param initial 初始值
 *  @param block   累计规则
 *
 *  @return 最新值
 */
- (id)reduce:(id)initial withBlock:(id (^)(id,id))block;

@end
